home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / taropyon / silib / inc / siopd.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  4.1 KB  |  151 lines

  1. #ifndef    _SIOPD_H
  2. #define    _SIOPD_H
  3.  
  4. #ifndef    _SIDEFS_H
  5. #    include    <sidefs.h>
  6. #endif
  7.  
  8. #define    OPD_HASH_MAX    (16)
  9.  
  10. typedef struct            /* キー情報設定用構造体    */
  11. {
  12.     CONST char           *sKey;
  13.     int                    typ;
  14.     int                    (*func)();    /* 処理関数            */
  15.     int                    typVar;        /* 変数タイプ        */
  16.     void               *ptrVar;        /* 変数のポインタ    */
  17.     void               *ptrWork;    /* ワークポインタ    */
  18. } OPDKEYPARA_T;
  19.  
  20. typedef struct _opdkey_t    /* キー情報構造体    */
  21. {
  22.     struct _opdkey_t    *next;
  23.     char               *sKey;
  24.     int                    typ;
  25.     int                    (*func)();    /* 処理関数            */
  26.     int                    typVar;        /* 変数のタイプ        */
  27.     void               *ptrVar;        /* 変数のポインタ    */
  28.     void               *ptrWork;    /* ワークポインタ    */
  29. } OPDKEY_T;
  30.  
  31. typedef SINAMLST_T    OPDPARA_T;
  32.  
  33. typedef struct _opd_t
  34. {
  35.     unsigned int        att;
  36.     unsigned int        stt;
  37.     char               *sSwitch;    /* スイッチャー    */
  38.  
  39.     int                  (*funcStrcmp)(CONST char *,CONST char *);
  40.     int                  (*funcError)(struct _opd_t *opd,CONST char *);
  41.     int                  (*funcPara)(struct _opd_t *opd,CONST char *s);
  42.  
  43.     int                    numKey;        /* 登録キーの数    */
  44.     OPDKEY_T           *keyTbl[OPD_HASH_MAX];
  45.     OPDKEY_T           *keyLast;    /* 最後に処理したキー    */
  46.  
  47.     int                    numPara;    /* パラメータ数            */
  48.     OPDPARA_T           *paraTop;
  49.     OPDPARA_T           *paraLast;
  50.  
  51.     int                    numErr;        /* エラー数            */
  52.     char               *errmsg;        /* エラーメッセージ    */
  53. } OPD_T;
  54.  
  55. #define    OPDVAR_CHAR            (1)
  56. #define    OPDVAR_SHORT        (2)
  57. #define    OPDVAR_INT            (3)
  58. #define    OPDVAR_LONG            (4)
  59. #define    OPDVAR_FLOAT        (5)
  60. #define    OPDVAR_DOUBLE        (6)
  61. #define    OPDVAR_NAMEBUF        (8)
  62. #define    OPDVAR_NAMEHEEP        (9)
  63.  
  64. #define    OPDERR_RETURN        (-1)
  65. #define    OPDERR_IGNORE        (0)
  66.  
  67. /*----------------------------------------------------------------------*/
  68. typedef struct
  69. {
  70.     int        def;        /* デフォルト値    */
  71.     int        min;        /* 最小値        */
  72.     int        max;        /* 最大値        */
  73. } OPDNUMI_T;
  74.  
  75. /*----------------------------------------------------------------------*/
  76. typedef struct _opdselmdat_t
  77. {
  78.     struct _opdselmdat_t    *next;
  79.     char           *name;
  80.     int                ret;
  81. } OPDSELMDAT_T;
  82.  
  83. typedef struct
  84. {
  85.     int                def;    /* デフォルト    */
  86.     int                numDat;
  87.     OPDSELMDAT_T   *datTbl[OPD_HASH_MAX];
  88. } OPDSELM_T;
  89.  
  90. /*----------------------------------------------------------------------*/
  91. typedef struct
  92. {
  93.     CONST char       *name;
  94.     int                ret;
  95. } OPDSELNDAT_T;
  96.  
  97. typedef struct
  98. {
  99.     int                def;    /* デフォルト値    */
  100.     int                numDat;
  101.     OPDSELNDAT_T   *datAry;
  102. } OPDSELN_T;
  103.  
  104. /*----------------------------------------------------------------------*/
  105. typedef struct
  106. {
  107.     CONST char       *def;        /* デフォルト文字列    */
  108.     int                len;        /* バッファの長さ    */
  109. } OPDNAMEBUF_T;
  110.  
  111. /*----------------------------------------------------------------------*/
  112. typedef struct
  113. {
  114.     int                    numList;
  115.     OPDPARA_T           *listTop;
  116.     OPDPARA_T           *listLast;
  117. } OPDNAMELIST_T;
  118.  
  119. /*----------------------------------------------------------------------*/
  120. extern OPD_T       *OPD_open(unsigned int att);
  121. extern void            OPD_close(OPD_T *opd);
  122. extern OPDKEY_T       *OPD_getKey( OPD_T *opd, CONST char *sKey );
  123. extern int            OPD_setKey( OPD_T *opd, OPDKEYPARA_T *para );
  124. extern int            OPD_chkSwitcher( OPD_T *opd, int ch);
  125. extern int            OpdSetValue( int typ, void *ptr, ... );
  126. extern int            OPD_deocde( OPD_T *opd, int argc, char **argv );
  127. extern int            OPD_setPara( OPD_T *opd, CONST char *s );
  128. extern void            OPD_errmsg( OPD_T *opd, CONST char *form, ... );
  129.  
  130.  
  131. extern int        OpdFuncFlag( OPD_T *opd, OPDKEY_T *key, int argc, char **argv, int *pos);
  132.  
  133. extern int        OpdFuncNum( OPD_T *opd, OPDKEY_T *key, int argc, char **argv, int *pos);
  134.  
  135. extern int        OpdFuncNumi( OPD_T *opd, OPDKEY_T *key, int argc, char **argv, int *pos);
  136.  
  137. extern int        OpdFuncSeln( OPD_T *opd, OPDKEY_T *key, int argc, char **argv, int *pos);
  138.  
  139. extern int        OPD_setSelmDat( OPD_T *opd, OPDSELM_T *selm, int ret, CONST char *name );
  140. extern int        OpdFuncSelm( OPD_T *opd, OPDKEY_T *key, int argc, char **argv, int *pos);
  141.  
  142. extern int        OpdFuncNamebuf( OPD_T *opd, OPDKEY_T *key, int argc, char **argv, int *pos);
  143.  
  144. extern int        OPD_setNamelist( OPD_T *opd, OPDNAMELIST_T *namelist, CONST char *s );
  145. extern int        OpdFuncNamelist( OPD_T *opd, OPDKEY_T *key, int argc, char **argv, int *pos);
  146. /*----------------------------------------------------------------------*/
  147.  
  148.  
  149.  
  150. #endif
  151.